#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int SListDataType;
typedef struct SListNode
{
	SListDataType data;
	struct SListNode* next;
}SListNode;


void SListPrint(SListNode* phead);
void SListInit(SListNode** pphead);
void SListDestroy(SListNode** pphead);
void SListPushFront(SListNode** pphead,SListDataType x);
void SListPopFront(SListNode** pphead);
void SListPushBack(SListNode** pphead, SListDataType x);
void SListPopBack(SListNode** pphead);

SListNode* SListFind(SListNode* phead, SListDataType x);

void SListInsert(SListNode** phead, SListNode* pos, SListDataType x);
void SListErase(SListNode** phead, SListNode* pos);

void SListInsertAfter(SListNode** phead, SListNode* pos, SListDataType x);